package com.oig.sys.auth.service;

import com.oig.sys.auth.dto.ResourceColumnDto;
import com.oig.sys.auth.vo.ResourceColumnVo;

import java.util.List;


/**
 * @author wuxl
 */
public interface ITbResourceColumnService {

    /**
     * 列管理操作-新增列
     */
    ResourceColumnVo addResourceColumn(ResourceColumnDto resourceColumnDto);

    /**
     * 列管理操作-修改列
     */
    ResourceColumnVo updateResourceColumnByCode(ResourceColumnDto resourceColumnDto);

    /**
     * 列管理操作-新增菜单时，批量新增列
     */
    List<ResourceColumnVo> addResourceColumn(Integer resourceId,List<ResourceColumnDto> resourceColumnDtoList);

    /**
     * 列管理操作-修改菜单时，对应列的批量修改
     */
    List<ResourceColumnVo> updateResourceColumnByCode(Integer resourceId,List<ResourceColumnDto> resourceColumnDtoList);

    /**
     * 获取菜单展示列
     * @param resourceId 菜单id
     */
    List<ResourceColumnVo> findAllColumnByResourceId(Integer resourceId);

    /**
     * 获取用户展示列
     * @param resourceId 菜单id
     * @param userId 用户id
     * @return 如果用户有个性化列，返回用户个性化列，如果没有返回菜单默认的所有列
     */
    List<ResourceColumnVo> findAllColumnByResourceId(Integer resourceId, Integer userId, boolean addExclude);


    /**
     * 所有列一起传入存储
     */
    List<ResourceColumnVo> changeAllColumn(List<ResourceColumnDto> resourceColumnDtoList);


    void delAllColumnByResourceId(Integer resourceId);

    void delAllColumnByResourceIdList(List<Integer> resourceIdList);
}
